package com.yidu.hbatsams.action.AtsBaseItem;

import com.yidu.hbatsams.domain.AtsBaseItem;
import com.yidu.hbatsams.domain.AtsBaseSport;
import com.yidu.hbatsams.domain.AtsBaseSportItem;
import com.yidu.hbatsams.domain.vo.UserVo;
import com.yidu.hbatsams.service.AtsBaseItemService;
import com.yidu.hbatsams.service.AtsBaseSportItemService;
import com.yidu.hbatsams.service.AtsBaseSportService;
import com.yidu.hbatsams.utils.AtsBaseItemTree;
import com.yidu.hbatsams.utils.Message;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *
 * @描述 指标控制器层
 * @Date:2019 2019/10/31 9:14
 * @Author: wxy
 */
@Controller
@RequestMapping("atsBaseItem")
public class AtsBaseItemAction {
    //指标service
    @Resource
    AtsBaseItemService atsBaseItemService ;
    //体育项目service
    @Resource
    AtsBaseSportService atsBaseSportService;
    //体育项目指标关联
    @Resource
    AtsBaseSportItemService atsBaseSportItemService ;


    /**
     * 查询全部数据
     * @return 返回一个map集合
     */
    @RequestMapping("/findAll")
    @ResponseBody
    public Map<String,Object> findAll(Integer isva){
        Map<String,Object> map = new HashMap<>();
        List<AtsBaseItem> list = atsBaseItemService.findAll(isva);
        map.put("code",0);
        map.put("count",0);
        map.put("data",list);
        map.put("msg","0");
        return map ;
    }

    /**
     * 查询计划指标
     * @param isva
     * @return
     */
    @RequestMapping("/selectJs")
    @ResponseBody
    public Map<String,Object> selectjs(Integer isva){
        Map<String,Object> map = new HashMap<>();
        List<AtsBaseItem> list = atsBaseItemService.selectjs(isva);
        map.put("code",0);
        map.put("count",0);
        map.put("data",list);
        map.put("msg","0");
        return map ;
    }

    /**
     * 删除数据
     * @param id id
     * @return 返回int类型
     */
    @RequestMapping("/delete")
    @ResponseBody
    public int delete(String id,Integer isva){
        return atsBaseItemService.deleteByPrimaryKey(id,isva);
    }

    /**
     * 下拉树
     * @return 返回个集合
     */
    @RequestMapping("/treeNode")
    @ResponseBody
    public List<AtsBaseItemTree> findTreeNode(Integer isva , String top){

        return atsBaseItemService.findTreeNode(isva,top);
    }

    /**
     * 下拉树
     * @return 返回个集合
     */
    @RequestMapping("/treeNodet")
    @ResponseBody
    public List<AtsBaseItemTree> findTreeNodet(String sport, String isva ,Integer curriculumId ){
        return atsBaseItemService.findSport(sport,isva ,curriculumId);
    }

    /**
     * 下拉树
     * @return 返回个集合
     */
    @RequestMapping("/tree")
    @ResponseBody
    public List<AtsBaseItemTree> treeNode(Integer isva,String top, Integer curriculumId){

        return atsBaseItemService.treeNode(isva,top,curriculumId);
    }
    /**
     * 增加数据
     * @param atsBaseItem 指标实体类
     * @return 返回int数据
     */
    @RequestMapping("/insert")
    @ResponseBody
    public int insert(HttpSession session , AtsBaseItem atsBaseItem){
        UserVo us = (UserVo) session.getAttribute("user");
        if(atsBaseItem.getItemId()!=null ){
            return atsBaseItemService.update(atsBaseItem);
        }else{
            atsBaseItem.setCreater(us.getUserName());
            return atsBaseItemService.insert(atsBaseItem) ;
        }

    }

    /**
     * 根据id查询数据
     * @param id
     * @return 返回一个指标类
     */
    @RequestMapping("/findById")
    @ResponseBody
    public AtsBaseItem findById(String id){
        return atsBaseItemService.findById(id);
    }

    /**
     * 查询所有体育项目
     * @return 返回一个集合
     */
    @RequestMapping("/findSportAll")
    @ResponseBody
    public List<AtsBaseSport> findSportAll(){
        return atsBaseSportService.findAll();
    }

    /**
     * 根据指标查询体育项目
     * @param id 指标id
     * @return 返回一个指标和体育项目关联的集合
     */
    @RequestMapping("/findSport")
    @ResponseBody 
    public List<AtsBaseSportItem> findSport(Integer id){
        return atsBaseSportItemService.selectItme(id);
    }
    @RequestMapping("/findItme")
    @ResponseBody
    public Message findItme(Integer id){
        Message message = new Message();

        List<AtsBaseSportItem> list = atsBaseSportItemService.selectItme(id);
        message.setNum(list.size());
        return message;
    }

    /**
     * 导出excel
     * @param response
     * @throws IOException
     */
    @RequestMapping(value = "/export")
    @ResponseBody
    public void export(HttpServletResponse response , Integer isva) throws IOException {
        HSSFWorkbook wb = new HSSFWorkbook();

        HSSFSheet sheet = wb.createSheet("运动项目指标数据表");

        HSSFRow row = null;

        row = sheet.createRow(0);//创建第一个单元格
        row.setHeight((short) (36.25 * 30));
        row.createCell(0).setCellValue("运动项目指标数据表");//为第一行单元格设值

        CellRangeAddress rowRegion = new CellRangeAddress(0, 0, 0, 2);
        sheet.addMergedRegion(rowRegion);

        int u = 1 ;

        row.setHeight((short) (22.50 * 20));//设置行高
        HSSFRow you  = row ;
        List<AtsBaseSport> listSport = atsBaseSportService.findAll();
        int o = 2 ;
        boolean bool = true ;
        you = sheet.createRow(o);
        for(int i = 0 ; i < listSport.size() ; i++){
            row = sheet.createRow(u);
            int z = 0 ;
            row.createCell(z).setCellValue(listSport.get(i).getSportName());//为第一个单元格设值
            List<AtsBaseItem> listItem = atsBaseItemService.findItemSport(0,listSport.get(i).getSportId());
            for (int j = 0; j < listItem.size(); j++) {
                int x = z ;
                you.createCell(z).setCellValue(listItem.get(j).getItemExp());
                List<AtsBaseItem> list = atsBaseItemService.findItemSport(listItem.get(j).getItemId(),listSport.get(i).getSportId());
                if(list.size()>0){
                    z++ ;
                    for (int k = 0; k < list.size(); k++) {
                        int p = z ;
                        you.createCell(z).setCellValue(list.get(k).getItemExp());
                        List<AtsBaseItem> listOne = atsBaseItemService.findItemSport(list.get(k).getItemId(),listSport.get(i).getSportId());
                        if(listOne.size()>0){
                            z++ ;
                            for (int l = 0; l < listOne.size() ; l++) {
                                int m = z ;
                                you.createCell(z).setCellValue(listOne.get(l).getItemExp());
                                List<AtsBaseItem> listTwo = atsBaseItemService.findItemSport(listOne.get(l).getItemId(),listSport.get(i).getSportId());
                                if(listTwo.size()>0){
                                    z++;
                                    for (int n = 0; n < listTwo.size(); n++) {
                                        you.createCell(z).setCellValue(listTwo.get(n).getItemExp());
                                        o++;
                                    }
                                }else{
                                    o++ ;
                                    you = sheet.createRow(o);
                                }
                            }
                        }else{
                            o++ ;
                            you = sheet.createRow(o);
                        }
                        z = p ;
                    }
                }else{
                    o++ ;
                    you = sheet.createRow(o);
                }
                z = x ;
            }
            o += 2;
            u=o;
        }

        sheet.setDefaultRowHeight((short) (16.5 * 20));
        //列宽自适应
        for (int i = 0; i <= 13; i++) {
            sheet.autoSizeColumn(i);
        }
        response.setContentType("application/vnd.ms-excel;charset=utf-8");
        OutputStream os = response.getOutputStream();
        response.setHeader("Content-disposition", "attachment;filename=user.xls");//默认Excel名称
        wb.write(os);
        os.flush();
        os.close();
    }
    /**
     * 根据课计划id查询指标
     * @param pid 课计划id
     * @return
     */
    @RequestMapping("/findPlanItem")
    @ResponseBody
    public List<AtsBaseItemTree> findPlanItem(Integer pid){
        return atsBaseItemService.findPlanItem(pid) ;
    }


    /**
     * 根据课计划id查询
     * @param pid
     * @return
     */
    @RequestMapping("/findPlan")
    @ResponseBody
    public List<AtsBaseItemTree> findPlan(Integer pid){
        return atsBaseItemService.findPlan(pid) ;
    }

}
